#ifndef TOKEN_H
#define TOKEN_H

enum Token {
    UNDEFINED = 0,  // 未定义

    // keywords
    KW_INT,
    KW_VOID,
    KW_RETURN, 
    KW_CONST, 
    KW_MAIN,
    KW_FLOAT,
    KW_IF,
    KW_ELSE,

    // operators
    OP_PLUS,        // +
    OP_MINUS,       // -
    OP_MULTIPLY,    // *
    OP_DIVIDE,      // /
    OP_PERCENT,     // %
    OP_ASSIGN,      // =
    OP_GT,          // >
    OP_LT,          // <
    OP_NOT,         // !
    OP_EQUAL,       // ==
    OP_LEQ,         // <=
    OP_GEQ,         // >=
    OP_NEQ,         // !=
    OP_AND,         // &&
    OP_OR,          // ||

    // SE
    SE_LPARENT,     // (
    SE_RPARENT,     // )
    SE_LBRACES,     // { 
    SE_RBARCES,     // }
    SE_SEMICOLON,   // ;
    SE_COMMA,       // ,

    IDN,            // 标识符: (letter|_)(letter|digit|_)*
    INT,
    FLOAT
};

#endif
